package com.dyz.wsw.domain.admin.service;

import com.dyz.wsw.common.consts.data.AccountConst;
import com.dyz.wsw.common.pojo.auth.Principal;
import com.dyz.wsw.common.web.JsonResult;
import com.dyz.wsw.domain.admin.pojo.LoginInfoDTO;
import reactor.core.publisher.Mono;

/**
 * 处理登录相关业务
 * @author dyz
 * Time 2024/6/26 23:57
 */
public interface IUserService extends AccountConst {
    /**
     * 登录
     * @param loginInfoDTO 用户表单
     * @param ip ip地址
     * @param userAgent 用户设备
     * @return 登录结果
     */
    Mono<JsonResult> handleLogin(LoginInfoDTO loginInfoDTO, String ip, String userAgent);

    /**
     * 根据用户id处理登出请求
     * @param userId 用户请求
     * @return 登录操作结果
     */
    Mono<JsonResult> handleLogout(Long userId);


    /**
     * 根据当事人查询当前用户信息
     * @param principal 当事人
     * @return 用户信息
     */
    Mono<JsonResult> getUserInfo(Principal principal);

}
